package com.sg.file.transform.api.dto;

import com.sg.file.common.conf.FileSizeTypeConf;
import com.sg.file.manager.repository.pojo.FileInfo;
import com.sg.file.receive.provider.util.creator.PathCreator;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * Created by asus on 2018/7/16.
 */
@Getter
@Setter
public class TransformReqeust implements Serializable {
    private static final long serialVersionUID = 2200212596400889351L;
    //文件ID
    private String fileId;
    //原文件路径
    private String originFilePath;
    //需要转化的文件尺寸类型
    private String transformToFileSizeType;
    //需要转化的文件后缀类型（文件类型）
    private String transformToFileSuffixType;
    //文件类型 image，video,audio等
    private String fileType;
    //转换文件名称
    private String transformFilePath;
    //转换类名称
    private String transformClassName;

    /**
     * 将filecreatedto转换成TransformRequest
     * @param fileInfo 文件信息
     * @param fileSuffixType 文件后缀
     * @param basePath 基础路径
     * @param transformClassName 转换类名称
     * @return
     */
    public static TransformReqeust toTransformRequest(FileInfo fileInfo,String fileSuffixType,
                                                      String basePath,String transformClassName){
        return toTransformRequest(fileInfo,fileSuffixType,basePath,FileSizeTypeConf.ORIGINAL,transformClassName);
    }
    /**
     * 将filecreatedto转换成TransformRequest
     * @param fileInfo 文件信息
     * @param fileSuffixType 文件后缀
     * @param basePath 基础路径
     * @param fileSizeType 文件尺寸类型
     * @param transformClassName 转换类名称
     * @return
     */
    public static TransformReqeust toTransformRequest(FileInfo fileInfo,String fileSuffixType,String basePath,
                                                      String fileSizeType,String transformClassName){
        TransformReqeust transformReqeust  = new TransformReqeust();
        //生成转换后文件保存路径
        String transformFilePath = PathCreator.create(fileInfo,basePath,fileSizeType,fileSuffixType);

        transformReqeust.setFileType(fileInfo.getFileType());
        transformReqeust.setFileId(fileInfo.getFileId());
        transformReqeust.setOriginFilePath(fileInfo.getFilePath());
        transformReqeust.setTransformToFileSizeType(fileSizeType);
        transformReqeust.setTransformToFileSuffixType(fileSuffixType);
        transformReqeust.setTransformFilePath(transformFilePath);
        transformReqeust.setTransformClassName(transformClassName);

        return transformReqeust;
    }
}
